const { defineConfig } = require('@vue/cli-service')

const path = require("path");
function resolve(dir) {
  return path.join(__dirname, dir)
}

module.exports = defineConfig({

  transpileDependencies: true,
  // 基本路径
  // publicPath: process.env.NODE_ENV === 'production' ? './' : '/',


  // 输出文件目录
  outputDir: process.env.NODE_ENV === "production" ? "dist" : "devdist",
  // eslint-loader 是否在保存的时候检查
  lintOnSave: false,



  chainWebpack: config => {
    // 设置svg-sprite-loader
    // config为webpack配置对象
    // config.module表示创建一个规则
    config.module
      // 规则
      .rule('svg')
      // 忽略
      .exclude.add(resolve('./src/components/svgIcon/icon'))
      // 结束
      .end()

    // 新增icons规则，设置svg-sprite-loader处理icons⽬录中的svg
    config.module
      // 规则
      .rule('icons')
      // 正则表达式，解析.svg格式文件
      .test(/\.svg$/)
      // 解析的文件路径
      .include.add(resolve('./src/components/svgIcon/icon'))
      // 结束
      .end()
      // 新增一个解析的loader
      .use('svg-sprite-loader')
      // 具体的loader
      .loader('svg-sprite-loader')
      // loader的配置
      .options({
        symbolId: 'icon-[name]' 
      })
      // 结束
      .end()
  },

  // configureWebpack: (config) => {
  //   config.resolve = { // 配置解析别名
  //     extensions: ['.js', '.json', '.vue','.svg'], // 自动添加文件名后缀
  //     alias: {
  //       '@': path.resolve(__dirname, './src'),
  //       '@u': path.resolve(__dirname, './src/utils'),
  //       '@a': path.resolve(__dirname, './src/api'),
  //       '@c': path.resolve(__dirname, './src/components')
  //     }
  //   }
  //   config.externals = {
  //     vue: "Vue",
  //     "element-plus": "ElementPlus"
  //   }
  //   //关闭 webpack 的性能提示
  //   config.performance = {
  //     hints: false
  //   }
  // },

  // css配置
  css: {
    loaderOptions: {
      scss: {
        prependData: `@import "./src/style/main.scss";`
      }
    },
  },


  // webpack-dev-server 跨域相关配置
  devServer: {
    open: false, // 编译完成是否打开网页
    host: '0.0.0.0', // 指定使用地址，默认localhost,0.0.0.0代表可以被外界访问
    port: 8080, // 访问端口
    https: false, // 编译失败时刷新页面
    hot: true, // 开启热加载
    // 代理跨域
    proxy: {
      [process.env.VUE_APP_API_URL]: { // 捕获API的标志，如果API中有这个字符串，那么就开始匹配代理
        // target: "http://localhost:8089/api/dev", // 代理的api地址，就是要跨域的地址
        target: process.env.VUE_APP_API_URL,
        changeOrigin: true, // 是否允许跨域（作用是可以让target参数是域名）
        ws: true, // 是否允许使用websocket，如果用到了，可以设置为true
        secure: false, // 是否启用https接口
        pathRewrite: { // 对请求路径匹配到的字符串重写
          [`^${process.env.VUE_APP_API_URL}`]: "" // 匹配开头为 /api的字符串，并替换成空字符串
        }
      }
    }
  },

})
